﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.Data;
using System.Data.Linq;
using System.Web.UI.WebControls;
using Emporium_Web.Enums;
using Emporium_Web.DBML;

namespace Emporium_Web.Controls
{
    public partial class EstiloImagenShow : System.Web.UI.UserControl
    {
        public int CodigoImagen
        {
            get
            {
                return ViewState["CodigoImagen"] == null ? 0 : Convert.ToInt32(ViewState["CodigoImagen"]);
            }
            set
            {
                ViewState["CodigoImagen"] = value;
            }
        }

        public int CodigoEstilo
        {
            get
            {
                return ViewState["CodigoEstilo"] == null ? 0 : Convert.ToInt32(ViewState["CodigoEstilo"]);
            }
            set
            {
                ViewState["CodigoEstilo"] = value;
            }
        }

        /// <summary>
        /// Las Imagenes del estilo.
        /// </summary>
        private List<Imagen> Imagenes
        {
            get
            {
                return ViewState["TG_EstiloImagenes"] == null ? null : (List<Imagen>)ViewState["TG_EstiloImagenes"];
            }
            set
            {
                ViewState["TG_EstiloImagenes"] = value;
            }
        }

        public object ImagenesTemp{ get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {
            imgImagen.Visible = false;
        }

        public void Show()
        {
            if (this.CodigoEstilo > 0)
            {
                Imagenes = (List<Imagen>)ImagenesTemp;

                mpeImagenUpLoad.Show();

                TablasDataContext database = new TablasDataContext();               

                var imagen = Imagenes.Find(c=> c.Id == this.CodigoImagen);

                imgImagen.Visible = true;
                imgImagen.ImageUrl = imagen.Ruta;

                var imagenSeleccionada = Imagenes.IndexOf(imagen);

                EstablecerEstadoBotones(imagenSeleccionada, Imagenes.Count);                
            }
        }

        protected void btnAnterior_Click(object sender, EventArgs e)
        {
            TablasDataContext database = new TablasDataContext();           

            var imagen = Imagenes.Find(c => c.Id == this.CodigoImagen);

            var imagenSeleccionada = Imagenes.IndexOf(imagen);

            if (imagenSeleccionada > 0)
            {
                imgImagen.Visible = true;
                imgImagen.ImageUrl = Imagenes[imagenSeleccionada - 1].Ruta;
                CodigoImagen = Imagenes[imagenSeleccionada - 1].Id;
                EstablecerEstadoBotones(imagenSeleccionada - 1, Imagenes.Count);
            }

           
            mpeImagenUpLoad.Show();
        }

        protected void btnSiguiente_Click(object sender, EventArgs e)
        {
            TablasDataContext database = new TablasDataContext();

            var imagen = Imagenes.Find(c => c.Id == this.CodigoImagen);

            var imagenSeleccionada = Imagenes.IndexOf(imagen);

            if (imagenSeleccionada <= Imagenes.Count - 1)
            {
                imgImagen.Visible = true;
                imgImagen.ImageUrl = Imagenes[imagenSeleccionada + 1].Ruta;
                CodigoImagen = Imagenes[imagenSeleccionada + 1].Id;
                EstablecerEstadoBotones(imagenSeleccionada + 1, Imagenes.Count);
            }


            mpeImagenUpLoad.Show();
        }

        private void EstablecerEstadoBotones(int imagenSeleccionada, int cantidad)
        {
            if (imagenSeleccionada > 0)
                btnAnterior.Visible = true;
            else
                btnAnterior.Visible = false;

            if (imagenSeleccionada < cantidad - 1)
                btnSiguiente.Visible = true;
            else
                btnSiguiente.Visible = false;
        }
    }
}